package io.renren.modules.wcs.service;

import io.renren.modules.wcs.entity.CargoArg;
import io.renren.modules.wcs.entity.DDJJobEntity;
import io.renren.modules.wcs.entity.DDJTaskEntity;

/**
 * @Author: 蔡翔
 * @Date: 2019/10/16 16:01
 * @Version 1.0
 * finally-cx
 * 等待与现场对接的两个功能：（现在都不需要了。）
 *      1. 堆垛机plc 如果发生故障，怎么清除故障（和电控对接），和哪些故障信息需要采集并且返回给前端
 *      2. 称重plc 如果发生故障，怎么清楚故障（和电控对接），可清除故障和不可清除故障。怎么结束任务，结束任务后我需要做什么操作
 *      3. L_STOP 啥时候重置。
 */
public interface DDJService {

    /**
     * caixiang
     *
     * 功能：修改当前堆垛机位置：Current_Layer、Current_Column、Current_Position
     * 返回
     *      -1 写入IOServer 异常
     *      0  写入IOServer 失败
     *      1  写入IOServer 成功
     *
     *
     **/
    Integer modifyCurrentPLC(DDJTaskEntity ddjArgEntity);

    /**
     *返回 1 成功；-1 异常；0 失败
     **/
    Integer modifyCargoArg(CargoArg cargoArg);

    /**
     *设置 设备状态
     **/
    Integer modifyDeviceStatus(CargoArg cargoArg);

    /**
     *设置 设备启动
     **/
    Integer modifyDeviceLstart(CargoArg cargoArg);

    Integer modifyCargoFirstHeight(CargoArg cargoArg);

    /**
     * caixaing
     * status : work
     * 软停止当前任务
     **/
    Integer stopCurrentTask();

    /**
     * caixiang
     *
     * 输入值：
     *      targetPosition  代表 起点
     *      takePosition    代表 终点
     *      type            代表 1《==》入库；；2 《==》 出库
     *      position        代表 某个口子
     *
     * 返回值:
     *      -1 代表 IOServer 写入异常               (√)
     *      -2 代表 堆垛机在执行任务途中 出现故障。     (√)
     *      -3 代表 重置称重plc 失败
     *      1 代表 堆垛机执行成功。                   (√)
     *      2 代表 重置任务失败。
     *      3 代表 分发任务失败。
     *
     * status : work
     **/
    Integer sendTaskAndListening(DDJJobEntity ddjJobEntity);
}